

#ifndef UC_GEPONC3D_H
#define UC_GEPONC3D_H

#include "zgepent3d.h"
#pragma pack (push, 8)

class UcGeCurve3d;

class
GE_DLLEXPIMPORT
UcGePointOnCurve3d : public UcGePointEnt3d
{
public:
    UcGePointOnCurve3d();
    UcGePointOnCurve3d(const UcGeCurve3d& crv);
    UcGePointOnCurve3d(const UcGeCurve3d& crv, double param);
    UcGePointOnCurve3d(const UcGePointOnCurve3d& src);

    UcGePointOnCurve3d& operator =     (const UcGePointOnCurve3d& src);

    const UcGeCurve3d*  curve          () const;
    double              parameter      () const;

    UcGePoint3d         point          () const;
    UcGePoint3d         point          (double param);
    UcGePoint3d         point          (const UcGeCurve3d& crv, double param);

    UcGeVector3d        deriv          (int order) const;
    UcGeVector3d        deriv          (int order, double param);
    UcGeVector3d        deriv          (int order, const UcGeCurve3d& crv,
                                        double param);

    ZSoft::Boolean      isSingular     (const UcGeTol& tol =
	                                UcGeContext::gTol) const;
    ZSoft::Boolean     	curvature      (double& res);
    ZSoft::Boolean     	curvature      (double param, double& res);

    UcGePointOnCurve3d& setCurve       (const UcGeCurve3d& crv);
    UcGePointOnCurve3d& setParameter   (double param);
};

#pragma pack (pop)
#endif

